package ink.xiaobaibai.common.delay;

import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.DelayQueue;

/**
 * @description: 自创延时队列
 * @author: 小白白
 * @create: 2021-05-31
 **/

public class MyDelayQueue<T> extends DelayQueue<DeviceDelayItem> {

    public Set<DeviceDelayItem> set = new HashSet<>();

    /**
     * 通用add
     */
    @Override
    public boolean add(DeviceDelayItem deviceDelayItem) {
        if (this.set.contains(deviceDelayItem)) {
            //清除后方可加入
            this.remove(deviceDelayItem);
        }
        this.set.add(deviceDelayItem);
        return super.add(deviceDelayItem);
    }

    /**
     * 删除队列中的目标对象
     */
    public boolean remove(DeviceDelayItem deviceDelayItem) {
        if (!this.set.remove(deviceDelayItem)) {
            //本就不存在
            return true;
        }
        return super.remove(deviceDelayItem);
    }

}
